99 research outputs found
Ways of Applying Artificial Intelligence in Software Engineering
As Artificial Intelligence (AI) techniques have become more powerful and
easier to use they are increasingly deployed as key components of modern
software systems. While this enables new functionality and often allows better
adaptation to user needs it also creates additional problems for software
engineers and exposes companies to new risks. Some work has been done to better
understand the interaction between Software Engineering and AI but we lack
methods to classify ways of applying AI in software systems and to analyse and
understand the risks this poses. Only by doing so can we devise tools and
solutions to help mitigate them. This paper presents the AI in SE Application
Levels (AI-SEAL) taxonomy that categorises applications according to their
point of AI application, the type of AI technology used and the automation
level allowed. We show the usefulness of this taxonomy by classifying 15 papers
from previous editions of the RAISE workshop. Results show that the taxonomy
allows classification of distinct AI applications and provides insights
concerning the risks associated with them. We argue that this will be important
for companies in deciding how to apply AI in their software applications and to
create strategies for its use
Adopting Free/Libre/Open Source Software Practices, Techniques and Methods for Industrial Use
Today’s software companies face the challenges of highly distributed development projects and constantly changing requirements. This paper proposes the adoption of relevant Free/Libre/Open Source Software (FLOSS) practices in order to improve software development projects in industry. Many FLOSS projects have proven to be very successful, producing high quality products with steady and frequent releases. This study aims to identify FLOSS practices that can be adapted for the corporate environment. To achieve this goal, a framework to compare FLOSS and industrial development methodologies was created. Three successful FLOSS projects were selected as study targets (the Linux Kernel, the FreeBSD operating system, and the JBoss application server), as well as two projects from Ericsson, a large telecommunications company. Based on an analysis of these projects, FLOSS best practices were tailored to fit industrial development environments. The final results consisted of a set of key adoption opportunities that aimed to improve software quality and overall development productivity by importing best practices from the FLOSS environment. The adoption opportunities were then validated at three large corporations
A Testability Analysis Framework for Non-Functional Properties
This paper presents background, the basic steps and an example for a
testability analysis framework for non-functional properties
Towards Causal Analysis of Empirical Software Engineering Data: The Impact of Programming Languages on Coding Competitions
There is abundant observational data in the software engineering domain,
whereas running large-scale controlled experiments is often practically
impossible. Thus, most empirical studies can only report statistical
correlations -- instead of potentially more insightful and robust causal
relations. To support analyzing purely observational data for causal relations,
and to assess any differences between purely predictive and causal models of
the same data, this paper discusses some novel techniques based on structural
causal models (such as directed acyclic graphs of causal Bayesian networks).
Using these techniques, one can rigorously express, and partially validate,
causal hypotheses; and then use the causal information to guide the
construction of a statistical model that captures genuine causal relations --
such that correlation does imply causation. We apply these ideas to analyzing
public data about programmer performance in Code Jam, a large world-wide coding
contest organized by Google every year. Specifically, we look at the impact of
different programming languages on a participant's performance in the contest.
While the overall effect associated with programming languages is weak compared
to other variables -- regardless of whether we consider correlational or causal
links -- we found considerable differences between a purely associational and a
causal analysis of the very same data. The takeaway message is that even an
imperfect causal analysis of observational data can help answer the salient
research questions more precisely and more robustly than with just purely
predictive techniques -- where genuine causal effects may be confounded
Bayesian Data Analysis in Empirical Software Engineering Research
Statistics comes in two main flavors: frequentist and Bayesian. For
historical and technical reasons, frequentist statistics have traditionally
dominated empirical data analysis, and certainly remain prevalent in empirical
software engineering. This situation is unfortunate because frequentist
statistics suffer from a number of shortcomings---such as lack of flexibility
and results that are unintuitive and hard to interpret---that curtail their
effectiveness when dealing with the heterogeneous data that is increasingly
available for empirical analysis of software engineering practice.
In this paper, we pinpoint these shortcomings, and present Bayesian data
analysis techniques that provide tangible benefits---as they can provide
clearer results that are simultaneously robust and nuanced. After a short,
high-level introduction to the basic tools of Bayesian statistics, we present
the reanalysis of two empirical studies on the effectiveness of automatically
generated tests and the performance of programming languages. By contrasting
the original frequentist analyses with our new Bayesian analyses, we
demonstrate the concrete advantages of the latter. To conclude we advocate a
more prominent role for Bayesian statistical techniques in empirical software
engineering research and practice.Comment: To appear in IEEE Transactions on Software Engineerin
- …